package com.adams.custom.page.core.service;

import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import com.adams.core.exception.BusinessException;

/**
 * 
 * File Name : TableDataService.java
 * 
 * @Description : 表数据服务
 */
public interface DataService
{

	/**
	 * Description : 查询数据接口
	 * 
	 * @param tablecode
	 *            查询的表
	 * @param targetColumncodes
	 *            查询的字段集
	 * @param conditionColumncodes
	 *            需要过滤的字段及参数 结构为: {columncode:{compareType:parameterValues}} 实例：
	 *            { "menuName":{"like":["2"]}, "visible":{"=":["1"]},
	 *            "id":{"between":["1","10"]} }
	 * @param orderColumncodes
	 *            排序字段集[columncode:ordertype{asc:升序;desc:倒序}]
	 * @return
	 * @throws BusinessException
	 * 
	 */
	@SuppressWarnings("unchecked")
	public List<Map> getDatas(String tablecode, List<String> targetColumncodes,
			LinkedHashMap<String, Map<String, String[]>> conditionColumncodes,
			LinkedHashMap<String, String> orderColumncodes)
			throws BusinessException;

	/**
	 * Description : 查询数据接口 支持分页
	 * 
	 * @param tablecode
	 *            查询的表
	 * @param targetColumncodes
	 *            查询的字段集
	 * @param conditionColumncodes
	 *            需要过滤的字段及参数 结构为: {columncode:{compareType:parameterValues}} 实例：
	 *            { "menuName":{"like":["2"]}, "visible":{"=":["1"]},
	 *            "id":{"between":["1","10"]} }
	 * @param orderColumncodes
	 *            排序字段集[columncode:ordertype{asc:升序;desc:倒序}]
	 * 
	 * @param start
	 *            开始位置
	 * 
	 * @param limit
	 *            最大记录数
	 * 
	 * @return
	 * @throws BusinessException
	 * 
	 */
	@SuppressWarnings("unchecked")
	public List<Map> getDatas(String tablecode, List<String> targetColumncodes,
			LinkedHashMap<String, Map<String, String[]>> conditionColumncodes,
			LinkedHashMap<String, String> orderColumncodes, int start, int limit)
			throws BusinessException;
}
